import * as request from '@/common/sju.request'
import * as appConfig from '@/config/config'

//微信js-sdk引入
import * as jweixin from 'weixin-js-sdk'
// var jweixin = require('jweixin-module')

// let weixin = {
// apiUrl: ajax.apiUrl,
/**
 * @description  获取微信jsconfig参数
 * <br/>success回调方法的参数就是返回的原始数据
 * @param {string} title   分享标题
 * @param {string} linkUrl 分享页面路径
 * @param {string} imgUrl  图片路径
 * @param {string} desc    分享描述   
 * @param {function} success 成功后回调的方法
 */
function weixinJSConfig(title, linkUrl, imgUrl, desc) {
	//H5当前页面路径
	let url = window.location.href
	request('/home/getWeixinJSConfig', 'post', {
		url: url
	}).then(res => {
		//微信分享权限验证配置参数构造
		var config = {
			debug: false, //是否启用调试
			appId: res.data.appId, //微信公众号appID
			timestamp: res.data.timestamp, //时间戳
			nonceStr: res.data.nonceStr, //签名的随机串
			signature: res.data.signature, //签名
			jsApiList: [ //需要使用的JS接口列表
				'checkJsApi',
				'updateTimelineShareData',
				'updateAppMessageShareData',
				'hideMenuItems'
			]
		}

		//微信注入权限验证配置
		jweixin.config(config)

		//需在用户可能点击分享按钮前就先调用
		jweixin.ready(function() {
			jweixin.hideMenuItems({ // 要隐藏的菜单项，只能隐藏“传播类”和“保护类”按钮，所有menu项见附录3
				menuList: [
					'menuItem:originPage',
					'menuItem:openWithSafari',
					'menuItem:openWithQQBrowser',
					'menuItem:editTag',
					'menuItem:copyUrl',
					'menuItem:share:qq',
					'menuItem:favorite',
					'menuItem:share:QZone',
					'menuItem:openWithSafari'
				]
			})
			//分享到朋友圈
			jweixin.updateTimelineShareData({
				title: title, // 分享标题
				link: appConfig.appUrl + linkUrl, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				imgUrl: imgUrl, // 分享图标
				success: function() {
					// alert("updateTimelineShareData")
				}
			})

			//分享给朋友
			jweixin.updateAppMessageShareData({
				title: title, // 分享标题
				desc: desc, // 分享描述
				link: appConfig.appUrl + linkUrl, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				imgUrl: imgUrl, // 分享图标
				success: function() {
					// alert("updateAppMessageShareData")
				}
			})
		})
	})
}

// 微信H5扫码功能
function scanQRCode() {
	//H5当前页面路径
	let url = window.location.href
	request.request('/home/getWeixinJSConfig', 'post', {
		url: url
	}).then(res => {
		//微信权限验证配置参数构造
		let config = {
			debug: false,
			appId: res.data.appId,
			timestamp: res.data.timestamp,
			nonceStr: res.data.nonceStr,
			signature: res.data.signature,
			jsApiList: [
				'checkJsApi',
				'updateTimelineShareData',
				'updateAppMessageShareData',
				'hideMenuItems',
				'scanQRCode' //扫码权限
			]
		}

		//微信注入权限验证配置
		jweixin.config(config)
		jweixin.scanQRCode({
			// 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
			needResult: 1,
			// 可以指定扫二维码还是一维码，默认二者都有
			scanType: ['qrCode', 'barCode'],
			success: function(res) {
				// 当needResult 为 1 时，扫码返回的结果
				let result = res.resultStr
				if (res.resultStr.indexOf(',') > 0) {
					//条形码时返回的格式类似为【code128,123456789】		
					let dealserialNumber = res.resultStr.split(',')[1]
					//处理条形码扫描的字符
					dealserialNumber = dealserialNumber.replace(/[^a-z\d]/ig, '')
					dealserialNumber = dealserialNumber.replace('sn', '')
					uni.setStorageSync('dealserialNumber', dealserialNumber)
					//location.href='接收结果页面='+dealserialNumber//扫描结果传递到的处理页面
				} else {
					//二维码时
					alert(res.resultStr)
					//location.href='接收结果页面='+res.resultStr//扫描结果传递到的处理页面
				}
			}
		})
	})
}
//获取当前位置
function getCurrentLoation() {
	let url = window.location.href
	return new Promise((resolve, reject) => {
		request.request('/api/jssdk/weixin/getSeting/wx616d2572ec6e6b7f', 'post', {
			url: url
		},'',true).then(res => {
			//微信权限验证配置参数构造
			let config = {
				debug: false,
				appId: res.data.appId,
				timestamp: res.data.timestamp,
				nonceStr: res.data.nonceStr,
				signature: res.data.signature,
				jsApiList: [
					'checkJsApi',
					'updateTimelineShareData',
					'updateAppMessageShareData',
					'hideMenuItems',
					'getLocation' //获取地理位置
				]
			}

			//微信注入权限验证配置
			jweixin.config(config)
			jweixin.ready(function(){
			  // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
			  jweixin.getLocation({
			  	type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
			  	success: function(res) {
			  		var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
			  		var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
			  		var speed = res.speed; // 速度，以米/每秒计
			  		var accuracy = res.accuracy; // 位置精度
			  		resolve(res);
			  	}
			  })
			});
			jweixin.error(function(res){
			  // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
				reject(res);
			});



		})
	})
	
}
export {
	weixinJSConfig,
	scanQRCode,
	getCurrentLoation
}